package kin.service.security;

import java.util.List;

import kin.bean.security.Acl;
import kin.bean.security.AclId;
import kin.bean.security.Module;

public interface AclServiceManager {
public List<Acl> findAll();
	
	/**
	 * 增加或修改授权
	 * @param principalType 主体类型
	 * @param principalId 主体ID
	 * @param moduleId 资源模块ID
	 * @param permission C/R/U/D操作
	 * @param yes 是否允许操作
	 */
	
	
	public void addOrUpdatePermission(String principalType,int principalId,int moduleId,
			int permission,boolean yes);
	
	/**
	 * 删除授权
	*@param principalType 主体类型(用户|角色)
	 * @param principalId 主体ID(用户ID|角色ID)
	 * @param moduleId 资源模块ID
	 */
	public void delPermission(String principalType,int principalId,int moduleId);
	
	/**
	 * 增加或修改用户的继承特性
	 * @param userId 用户ID
	 * @param moduleId 资源模块ID
	 * @param yes 是否继承
	 */
	public void addOrUpdateUserExtends(int userId,int moduleId,boolean yes);
	
	

	/**
	 * 该用户是否对资源拥有权限
	 * @paramserId 用户ID
	 * @param moduleId 资源模块ID
	 * @param permission 操作C/R/U/D
	 * @return  是否
	 */
	public boolean hasPermission(int userId,int moduleId,int permission);
	
	
	
	/**
	 * 查找用户所拥有读取权限的模块列表
	 * @param userId 用户ID
	 * @return 模块列表
	 */
	public List<Module> findModulesByUser(int userId);

	
	/**
	 * 查找某用户的某个角色的所有权限
	 * @param userId  用户ID
	 * @return 权限列表
	 */
	public List findPermissionsByRole(int userId);
	
/**
 * 
 * @param userId
 */
	public void delPermissionsByRole(int userId);
	//public List searchAclRecord(String principalType,int principalId);
	public AclId findAclId(String principalType,int principalId,int moduleId);
	
	public void delPermissionsByModule(int moduleId,int permission);
	
	public void delAclByModule(int moduleId);
	
	public List<Acl> findByUser(String principalType,int userId);
}
